Selective power point tracking

ABSTRACT

A controller receives electrical power at an input from one or more energy capture device and outputs electrical power to one or more external loads. The controller adjusts, according to a first algorithm, an electrical property affecting an apparent load resistance applied across the input. The controller determines, while the first algorithm is running, whether a first amount of power received by the input is satisfactory. If it is, the controller continues using the first algorithm. If it is not, the controller switches to a algorithm. The first and second maximum algorithms may be optimized for different environmental conditions, such as different amounts of sunlight incident on the one or more energy capture devices.

RELATED APPLICATIONS

This application is a Continuation of U.S. application Ser. No.14/332,168, filed Jul. 15, 2014, which claims priority and benefit toU.S. Provisional Application No. 61/946,582, filed Feb. 28, 2014,entitled “Selective Multi-Phase Maximum Power Point Tracking,” and toU.S. Provisional Application No. 62/014,037, filed Jun. 18, 2014,entitled “Selective Multi-Phase Maximum Power Point Tracking,” which arehereby incorporated by reference in their entireties.

TECHNICAL FIELD

The disclosed implementations relate generally to solar power generationcontrol, and more specifically, to maximum power point tracking forsolar power generation systems.

BACKGROUND

Photovoltaic panels, more commonly known as solar panels, are attractivemethods of generating clean, renewable energy, and are particularlyuseful in remote or underserved areas where grid-supplied power is notreadily available. Solar panels convert solar energy into electricalenergy that can be used to power appliances, charge batteries, andperform other useful tasks. Various environmental conditions affect theefficiency and power production capabilities of a solar panel, however.The amount of power that a solar panel can generate depends, forexample, on the temperature of the solar panel, the amount and/orbrightness of the light incident on the solar panel, and the magnitudeof the load(s) that are placed on the solar panel.

For a given operating condition of a solar panel (e.g., a giventemperature and amount of incident light), there is an optimal set ofload characteristics that will result in a maximum power output of thesolar panel. Thus, in order to achieve the maximum amount of power froma solar panel for a given condition, certain electrical characteristicsof the load (e.g., the impedance and/or resistance experienced by thesolar panel) must be kept at the optimal value. However, operatingconditions for a solar panel can change from day to day, and even fromminute to minute. Accordingly, techniques for tracking the maximum powerpoint of a solar panel, for example maximum power point tracking (MPPT)techniques, have been developed. But MPPT techniques are not all equallyeffective for all possible conditions. For example, a MPPT techniquethat works well for bright sunlight conditions may not work as well forheavily overcast conditions. Thus, even when using MPPT techniques, thefull power generation capabilities of a solar panel may not be achievedacross the full range of environmental conditions in which the solarpanel operates.

SUMMARY

Accordingly, it would be advantageous to provide systems and methodsthat employ different MPPT techniques and/or algorithms for differentenvironmental conditions. For example, as described herein, a controllerfor use with a solar power generation system monitors thecontemporaneous environmental conditions of the solar panel, and selectsan MPPT algorithm that is suited for that particular environmentalcondition. Accordingly, the solar panel will be able to operate at ornear its optimal power level throughout a broader spectrum ofenvironmental conditions, thus increasing the net amount of powergenerated by a solar power generation system over a given period.

A maximum power point tracking method is disclosed. In someimplementations, the method is performed at a controller having an inputconfigured to receive electrical power from one or more energy capturedevices, and an output configured to provide electrical power to anexternal load. The method includes initiating a first maximum powerpoint tracking algorithm during an epoch. The method further includesadjusting, according to the first maximum power point trackingalgorithm, an electrical property affecting an apparent load resistanceapplied to the one or more energy capture devices. The method furtherincludes, prior to an end of the epoch, determining whether the firstmaximum power point tracking algorithm is satisfactory. The methodfurther includes, in accordance with a determination that the firstmaximum power point tracking algorithm is satisfactory, continuing touse the first maximum power point tracking algorithm and continuing toadjust the electrical property according to the first maximum powerpoint tracking algorithm during the epoch. The method further includes,in accordance with a determination that the first maximum power pointtracking algorithm is unsatisfactory, (i) switching to a second maximumpower point tracking algorithm during the epoch, and (ii) adjusting theelectrical property according to the second maximum power point trackingalgorithm, wherein the first maximum power point tracking algorithm isdifferent from the second maximum power point tracking algorithm.

In accordance with some implementations, a computer system (e.g., aclient system, a server system, or a solar power system controller)includes one or more processors, memory, and one or more programs. Theone or more programs are stored in the memory and are configured to beexecuted by the one or more processors. The one or more programs includeinstructions for performing the operations of any of the methodsdescribed above or disclosed herein. In accordance with someimplementations, a non-transitory computer readable storage medium hasstored therein instructions which, when executed by one or moreprocessors, cause an apparatus (e.g., any device having one or moreprocessors or controllers) to perform the operations of any of themethods described above or disclosed herein.

BRIEF DESCRIPTION OF THE DRAWINGS

The implementations disclosed herein are illustrated by way of example,and not by way of limitation, in the figures of the accompanyingdrawings. Like reference numerals refer to corresponding partsthroughout the drawings.

FIG. 1 is a block diagram illustrating a solar power generation system,in accordance with some implementations.

FIGS. 2A-2E and 3 are graphs illustrating characteristics of a solarpanel, in accordance with some implementations.

FIG. 4 is a block diagram illustrating a controller for controllingoperation of a solar power generation system, in accordance with someimplementations.

FIGS. 5A-5F are flow diagrams illustrating a maximum power pointtracking method, in accordance with some implementations.

DETAILED DESCRIPTION

Attention is now directed to the figures, and in particular to FIG. 1,which is a block diagram of a solar power generation system 100, inaccordance with some implementations. The solar power generation system100 includes a controller 102, an energy capture device 110, and anexternal load 120 (e.g., external loads 120-1 . . . 120-n). Although notillustrated, solar power generation system 100 may include more than oneenergy capture device 110.

In some implementations, the energy capture device 110 is a solar panelconstructed of one or more photovoltaic cells. The photovoltaic cellsare made in any appropriate manner and made of any appropriatematerials. For example, in some implementations, the photovoltaic cellsare made of monocrystalline silicon, polycrystalline silicon, amorphoussilicon, cadmium telluride, copper indium selenide/sulfide, GaAs-basedmultijunction material systems, or any other appropriate material orcombination of materials.

The external load 120 is any suitable electrical load that receiveselectrical power from the energy capture device 110 via the controller102. In some implementations, the external load is an electrical device,such as a light (e.g., a lantern, flashlight, or any other type oflight), a mobile telephone, a radio, a laptop computer, a tabletcomputer, a battery charger, or any other appropriate electrical device.In some implementations, the external load 120 is an energy storagedevice, such as a rechargeable battery or a capacitor, such as a batteryof an electrical device (e.g., a lantern, flashlight, mobile telephone,computer, radio, etc.).

In some implementations, the external load 120 is a direct current (DC)load. In some implementations, the external load 120 is an alternatingcurrent (AC) load. Where the external load 120 is an AC load, thecontroller 102 includes power conversion components (e.g., an inverter)to convert DC power produced by the energy capture device 110 to theappropriate AC power required by the load. Where the external load 120is an active power grid (or other active AC power line), the powerconversion components of the controller 102 are capable of supplying ACcurrent in the phase, frequency, voltage, and/or current required by theexternal load 120.

The controller 102 includes a power input 104 and a power output 106(e.g., power outputs 106-1 . . . 106-n). The controller 102 isconfigured to receive electrical power from the energy capture device110 via the power input 104, and provide power to the external load 120via the power output 106. The controller 102 includes hardware and/orsoftware for performing various types of power conversion, conditioning,and sensing tasks. In some implementations, the controller 102 containshardware and/or software suitable for sensing electrical characteristicsof the energy capture device 110 (and/or any aspect of the system 100)and for adjusting the electrical characteristics of the load experiencedby the energy capture device 110. In some implementations, thecontroller 102 includes hardware and/or software for determining power,voltage, and current values (as well as values of any other appropriateelectrical characteristics) at various points within the controller 102,the energy capture device 110, and the external load 120. In someimplementations, the controller 102 contains hardware and/or softwarefor performing maximum power point tracking (MPPT). Examples of MPPTtechniques and algorithms used by the controller 102 are discussedherein.

The power input 104 connects the controller 102 to the energy capturedevice 110. While FIG. 1 illustrates a controller with a single powerinput 104, in some implementations, additional power inputs areincluded. In some such cases, the controller 102 treats each connectedenergy capture device independently. For example, in someimplementations, the controller 102 employs a separate instance of anMPPT algorithm (e.g., method 500, described herein) for each energycapture device. In other such cases, the controller 102 treats theconnected energy capture devices collectively. For example, thecontroller 102 employs a single instance of an MPPT algorithm (e.g.,method 500, described herein) for the combined input from the energycapture devices. Where multiple energy capture devices are treatedcollectively, they may be connected in serial, parallel, or anycombination of serial and parallel connections. In some implementations,the controller itself selects and implements one of multiple possibleelectrical connection configurations for the multiple energy capturedevices (e.g., series connections, parallel connections, combinations ofserial and parallel connections, etc.) based on, for example, therespective environmental conditions of the respective energy capturedevices.

The power output 106 connects the controller 102 to the external load120. While FIG. 1 illustrates multiple power outputs 106-1 . . . 106-nand multiple corresponding external loads 120-1 . . . 120-n, for ease ofdescription, the present discussion frequently refers to a single poweroutput 106 and a single external load 120. However, it will beunderstood that any reference herein to a single power output and/orexternal load applies equally to multiple power outputs and/or externalloads.

FIG. 1 can be understood as both a functional description of the solarpower generation system 100, as well as one example implementation ofthe components present in an example system. While the energy capturedevice 110, the controller 102, and the external load 120 are shown inFIG. 1 as separate, connected, components, this particular arrangementis merely an example, and these components may be combined in variousmanners. For example, in some implementations, the controller 102 iscombined with the energy capture device 110 in a common housing orstructure. In some implementations the controller 102 is combined withone or more of the external loads 120-1 . . . 120-n in a common housingor structure. In some implementations, the energy capture device 110,the controller 102, and one or more of the external loads 120-1 . . .120-n are all combined in a common housing or structure.

As noted above, the amount of power that a solar panel can producedepends on various factors. For example, different levels of radiantenergy incident on a solar panel results in different levels of powerproduced by the panel. As a specific example, a given solar panel isable to produce more power when exposed to direct sunlight than whenexposed to overcast conditions (or other conditions in which lessradiant energy is incident on the solar panel, such as when the panel isdirty, shaded/obstructed from direct sunlight, or the like). Thisrelationship is illustrated in FIG. 2B, which shows an example of agraph of power versus voltage for a solar cell when exposed to differentamounts of radiant energy. In particular, curve 222, which correspondsto a relatively higher exposure to radiant energy (e.g., directsunlight), exhibits a higher maximum power value than curves 224 and226, which correspond to relatively lower radiant energy (e.g., causedby indirect or partial sunlight, overcast skies, suspended particulate(e.g., dust), dawn or dusk, obstructed panels (e.g., dirt, shade),etc.).

The amount of power produced by a solar panel is also related to thevoltage at which the solar panel is operating. In particular, thecurrent that is produced by the solar panel for a given environmentalcondition is related to the voltage at which the panel is beingoperated. The voltage, current, and power of the panel can be controlledby adjusting one or more electrical characteristics of the loadexperienced by the panel. For example, by changing the resistance and/orimpedance experienced by the solar panel (sometimes referred to hereinas a load resistance and/or load impedance), a controller can attempt tolocate and operate the panel at or near the maximum power point. In someimplementations, as described herein, the electrical characteristics ofthe load experienced by the solar panel are manipulated by changing theduty cycle of a transistor that couples the external load 120 to theenergy capture device 110.

The relationship between voltage and current for a solar panel can beseen in FIG. 2A, which shows an example of a graph of current versusvoltage for a solar cell when exposed to different amounts of radiantenergy. For example, curve 202, which corresponds to a relatively higherexposure to radiant energy (e.g., direct sunlight), shows that thecurrent produced by the solar panel remains relatively constant as theoutput voltage increases, and then drops off rapidly after a certainpoint.

FIGS. 2A and 2B express different values along the y-axis. Inparticular, the y-axis of FIG. 2A represents current (e.g., the currentdelivered by a solar panel to an external load at a given voltage),while the y-axis of FIG. 2B represents power (e.g., the power producedby a solar panel at a given voltage). The curves in these figures aremathematically related (because power is a function of voltage andcurrent, both of which can be measured or otherwise determined by thecontroller 102), and each is derivable from the other when certaincharacteristics of the system are known and/or measured.

Moreover, as described herein, the current and power produced by a solarpanel are also functions, at least in part, of certain electricalcharacteristics of the load experienced by the solar panel (including,for example, the resistance and/or impedance experienced by the solarpanel). In some implementations, the electrical characteristics of theload are controlled by changing the duty cycle of a transistor betweenthe solar panel and the external load. Accordingly, while the x-axes inFIGS. 2A-2E are labeled as voltage, the figures also illustrate therelationship between voltage, duty cycle, and load impedance withrespect to the power and current versus voltage curves. Specifically, anincrease in the impedance experienced by the solar panel causes acorresponding increase in the voltage of the solar panel. The increasein impedance, in turn, is caused by a decrease in the duty cycle of atransistor.

As can be seen in FIG. 2B, there is a particular output voltage, labeledV_(x) where x is 1, 2 or 3, for a solar panel that corresponds to amaximum power production for that particular environmental condition. Inorder to achieve the maximum power output from a solar panel, then, itis advantageous to operate the solar panel at that particular operatingpoint. Notably, the operating point that corresponds to a maximum poweroutput is not the same for all environmental conditions. For example,with reference to FIG. 2B, the peak power under a high radiant energycondition (P_(max3)) occurs at a higher voltage (V₃) than the voltage(V₁) corresponding to peak power (P_(max1)) for a low radiant energycondition.

Because the environmental conditions of a typical solar panel vary frommoment to moment, operating the solar panel at a single operating pointfor all environmental conditions results in suboptimal power productionduring much of its operation. Overall power production can be increasedby using maximum power point tracking (MPPT) techniques. Maximum powerpoint tracking algorithms attempt to determine the operating parametersat which the solar panel produces the maximum power for acontemporaneous environmental condition. The operating parameters canthen be repeatedly adjusted to ensure that the peak power is beingproduced despite changing environmental conditions.

An example of an MPPT algorithm is one that varies one or moreelectrical characteristics of the load in order to detect the set ofcharacteristics at which the maximum power is produced (e.g., point228). The controller 102 then operates using those characteristics untilthe controller 102 detects that conditions have changed, and then stepsup or down the power curve (e.g., changing the electricalcharacteristics of the load so as to move the operating point in eitherthe positive or negative x-directions along a power curve) in order toidentify the new maximum power point. In some implementations, asdescribed herein, the controller 102 detects that conditions havechanged by detecting a change in the power output, the current, or thevoltage of the solar panel. In some implementations, whether thecontroller 102 steps up or down the power curve after determining thatthe conditions have changed depends on the particular change that isdetected. For example, if the power produced by the solar panelincreases, the controller 102 moves the operating point in the positivex-direction, or up the power curve, because the new maximum power pointis likely to be found in that direction along the power curve (i.e.,corresponding to a higher load impedance). On the other hand, if thepower produced by the solar panel decreases, the controller 102 movesthe operating point in the negative x-direction, or down the powercurve. As described herein, in some implementations, the electricalcharacteristic that the controller 102 actually manipulates in order tostep up and down the power curve is the duty cycle of a transistor thatcouples the external load 120 to the solar panel.

This technique is further illustrated in FIG. 2C, which illustrates howthe controller 102 varies the electrical characteristics of the load toseek a new maximum power point after determining that the currentoperating point may no longer correspond to the actual maximum powerpoint (i.e., because the conditions have changed). In particular, if thecontroller 102 is operating at point 227, which may, for example,correspond to a previously identified maximum power point, and thecontroller 102 detects that the power output increases, the controller102 varies one or more electrical characteristics of the load in orderto step up the power curve (i.e., in the positive x-direction) to thenew maximum power point. The controller 102 continues to step up thepower curve until a first condition is satisfied (e.g., at V_(M)).Moreover, while stepping up the power curve, the controller 102 monitorsthe power of the solar panel, and stores the maximum power value that itdetects while stepping up the power curve. Once the controller 102detects that the first condition is satisfied (e.g., the slope of thepower curve is becoming increasingly negative as the load impedancerises), it then reverses direction and steps down the power curve (i.e.,in the negative x-direction). The controller 102 steps down the powercurve until a second condition is satisfied (e.g., at V_(L)), whilestoring the maximum power value that it detects while stepping down. Insome implementations, the second condition is satisfied when the slopeof the power curve has been substantially constant for a certainduration.

By stepping up and down the power curve in this way, the controller 102essentially scans the local area of the power curve where the maximumpower point should be. In particular, the maximum power point shouldoccur between the points on the curve that correspond to the first andsecond conditions. More specifically, the maximum power point istypically found somewhere to the right of the portion of the curvehaving a constant positive slope value, and to the left of the portionof the curve that has a negative slope. Thus, the electricalcharacteristics of the load that correspond to the maximum power pointlocated between V_(L) and V_(M) in FIG. 2C are the characteristics atwhich the controller 102 should operate in order to achieve the maximumpower transfer from the solar panel for those environmentalcharacteristics. Of course, the controller 102 could have initiated thealgorithm by first seeking V_(L) and then seeking V_(M).

In some implementations, the controller 102 continues to step up anddown the power curve one or more additional times, while monitoring thehighest power value that is produced, in order to establish the newmaximum power point. For example, the controller 102 steps up and downthe power curve until the controller 102 consistently identifies thesame maximum power point. Once the controller 102 establishes themaximum power point, the controller 102 begins operating using theelectrical characteristics of the load that correspond to that point.

In some implementations, the controller 102 varies the impedance of theload placed on the solar panel in order to step up and down the powercurve. For example, in some implementations, the controller 102increases the impedance of the load by decreasing the duty cycle of atransistor in order to climb up the power curve, and decreases theimpedance of the load by increasing the duty cycle of a transistor inorder to climb down the power curve.

While the above described technique identifies the maximum power pointfor a given condition, its effectiveness and efficiency depends in parton how it is configured. Specifically, if the above described techniqueis optimized for sunny day conditions, it may perform suboptimally forcloudy day conditions, and vice versa. For example, while the powerdrops off relatively steeply on either side of the maximum power pointunder high radiant energy conditions, the power curves of solar panelsunder low radiant energy conditions tend to have less drastic powerchanges around the maximum power point. FIG. 2D illustrates thisphenomenon, as the distance between V_(m) and V_(L) in FIG. 2D (lowradiant energy) is greater than the distance between V_(m) and V_(L) inFIG. 2C (high radiant energy). Thus, under lower radiant energyconditions, the controller 102 will have to seek further up and down thepower curve to find the maximum power point, resulting in more timespent operating at points that are distant from the maximum power point.

Using an MPPT algorithm that is tuned for high radiant energy conditionsunder low radiant energy conditions can also result in other suboptimaloperation. For example, while the power curve 226 in FIGS. 2B and 2Dappears to be very smooth, this tends not to be true in practice. Inparticular, the curve may, in fact, have local maximums that do notcorrespond to the actual maximum power point of the curve. FIG. 2Eillustrates a portion of the curve 226 showing a local maximum 230 thatis not at the maximum power point 227. If an MPPT algorithm that istuned for high radiant energy conditions is used under conditionsrepresented by curve 226, the controller 102 may incorrectly identifypoint 230 as the maximum power point. In other words, because sunny dayconditions tend to result in a single, distinct maximum power point, analgorithm tuned for such conditions seeks around the maximum power pointonly a small amount. This can result in the undesired consequence ofoperating at a local maximum value, even though seeking through agreater range of the power curve would result in the controller 102identifying the true maximum power point.

Thus, as shown above, an MPPT algorithm that is well suited to maintainoperation at the maximum power point under high radiant energyconditions is not necessarily well suited to maintaining operation atthe maximum power point under lower radiant energy conditions.Accordingly, in some implementations, the controller 102 uses differentMPPT algorithms (and/or applies different configurations to the sameMPPT algorithm) for different environmental conditions. For example,when the energy capture device 110 is exposed to high radiant energyconditions (e.g., direct sunlight) the controller 102 uses a MPPTalgorithm that is particularly suited to those conditions, and when theconditions change to a lower radiant energy condition (e.g., dawn, dusk,cloud cover, dirty solar panels, etc.), the controller 102 changes to adifferent MPPT algorithm (or a different configuration of the same MPPTalgorithm) that is more suited to those conditions. As described herein,in some implementations, a low radiant energy MPPT algorithm uses largerstep sizes to traverse the power curve. For example, a high radiantenergy MPPT algorithm will step up and down the power curve by makingsmall changes in the load impedance. Because of the steepness of thepower curve near the maximum power point, these small changes allow thecontroller 102 to find the maximum power point within a relatively smallrange of load impedance values. Because the maximum power point of thepower curve is less well defined under low radiant energy conditions,however, the same small changes in load impedance would result in thecontroller 102 taking much longer to identify the peak point.Specifically, the points at which the first and second conditions aresatisfied under low radiant energy conditions are more distant from eachother than they are under high radiant energy conditions, meaning thatmore steps (and hence more time) would be required in order to stepbetween those points. Thus, in some implementations, the low radiantenergy MPPT algorithm uses larger step sizes when seeking the maximumpower point. Accordingly, the controller 102 can cover the distancebetween the first and second conditions (i.e., corresponding to V_(L)and V_(M)) more quickly, and spend less time operating at points thatare distant from the maximum power point.

By switching, in real-time, between different MPPT algorithms to suitchanging environmental conditions, the controller 102 can more closelytrack the maximum power point throughout a period of operation,resulting in a net increase in the power produced by an energy capturedevice 110 over that period, thus increasing the usefulness andefficiency of the solar power generation system.

In addition to using different MPPT algorithms for differentenvironmental conditions, in some implementations, the controller 102also performs a maximum power point seeking scan in response to variousevents and/or triggers. Whereas the MPPT algorithms described herein areused to maintain operation at or near the maximum power point with aminimum amount of seeking, the maximum power point seeking scan variesthe electrical characteristics of the load over a greater range in orderto gain a more comprehensive view of the contemporaneous environmentalconditions. For example, instead of gradually shifting from an existingoperating point to a new operating point, as described above, thecontroller 102 interrupts the current MPPT algorithm and begins to stepup the power curve from a relatively low point on the power curve. Thecontroller 102 continues to step up the power curve to a point that isdistinctly past the maximum power point. By scanning such a largeportion of the power curve, the controller 102 identifies the truemaximum power point while overlooking local maximums that the controller102 might have otherwise incorrectly identified as a maximum powerpoint. Moreover, as a result of the maximum power point seeking scan,the controller 102 determines whether the power curve is characteristicof a high radiant energy condition or a low radiant energy condition,and, thus, which type of MPPT algorithm should be used thereafter (i.e.,a high radiant energy MPPT algorithm or a low radiant energy MPPTalgorithm).

Additional details of an example MPPT algorithm are discussed withreference to FIG. 3. FIG. 3 illustrates an example of a power curve 300representative of a solar panel under a given environmental condition.While the curve 300 is essentially identical to the curve 222 in FIG.2A, the x-axis lists duty cycle values instead of voltages. This isbecause, in some implementations, the controller 102 includes atransistor (e.g., a field effect transistor (“FET”)) or othersolid-state switching device between the solar panel and the externalload to vary the impedance of the load experienced by the solar panel(and, hence, the voltage of the solar panel). Specifically, respectiveduty cycle values (i.e., ratios of on-time to off-time during a period)of the transistor correspond to respective impedance values. Thus, thecontroller 102 varies the impedance of the load experienced by the solarpanel (and thus climbs up or down the power curve) by changing the dutycycle of the transistor.

In some implementations, the controller 102 uses a stepping technique,whereby the controller 102 varies the duty cycle of the transistor overa series of steps in order to climb up and down the power curve, andmaintains a power trend based on measurements taken at each step. Insome implementations, a power trend is a value of the slope of the powercurve, and is calculated based on previous power measurements. Forexample, at each step (e.g., corresponding to a particular duty cyclevalue), the controller 102 determines the slope of the curve based onthe power detected at the most recent step and one or more previoussteps. Based at least in part on the power trend, the controller 102finds and operates at or near the maximum power point for a givenenvironmental condition, and determines how and when to change thealgorithm to provide better results (e.g., when the environmentalconditions change such that the concurrent MPPT algorithm is no longersuitable). In some implementations, the power trend is not a calculatedslope value, but corresponds to and/or is indicative of the slope of thepower curve. For example, in some implementations, slope values arerepresented by the difference in a detected power value betweensubsequent steps and/or measurements. For example, the slope of thepower curve between step 302 and step 304 in FIG. 3 can be representedsimply as the difference in power detected at each of these points.

In FIG. 3, several example duty cycle values are labeled along thex-axis, representing steps of an MPPT algorithm under some operatingconditions. (It will be understood that these duty cycle values aremerely examples, and, depending on the environmental conditions, thesevalues may or may not correspond to the particular power value orlocation indicated on the curve 300.) Points 302, 304, 306, 308, and 310represent example duty cycles at which the controller 102 will operatewhen using an example MPPT algorithm. The curve 300 in FIG. 3 representsan example of a power curve for a high radiant energy condition (e.g., asunny day).

As the controller 102 operates at each step (corresponding to aparticular duty cycle value), the controller 102 determines the powerdelivered by the solar panel during the step. Based on the powerdetermined at each step, the controller 102 determines a power trend ofthe power curve. In some implementations, the power trend is a slope ofthe power curve, and/or a value that is indicative of the slope of thepower curve between two or more steps. For example, after the controller102 steps from 60% to 58%, the controller 102 calculates a slope of thecurve between points 302 and 304. Subsequently, after the controller 102steps from 58% to 56%, the controller 102 calculates a slope of thecurve between at least points 304 and 306. The controller 102 can thusmonitor how the slope of the curve changes as the duty cycle decreaseswith each step. The controller 102 also measures the power produced bythe solar panel at each step in order to determine whether it is higherthan the power at the last step (which indicates that the previous stepwas not the maximum power point), or whether it is lower than the laststep.

In some implementations, the conditions that govern how far an MPPTalgorithm steps up and down the power curve in order to locate themaximum power point are based, at least in part, on the power trend atpoints along the power curve. In particular, when traversing the powercurve in the positive x-direction, the controller 102 continues todecrease the duty cycle and determine the power at each step until afirst condition is met. For example, the controller 102 decreases theduty cycle (e.g., traversing the power curve in a positive x-direction)until the power trend is indicative that the slope has become negative,is negative for a predetermined number of steps (e.g., 5), and/or isincreasingly negative for a certain number of steps (e.g., each powertrend value (e.g., slope) is more negative than the last value for acertain number of steps). In FIG. 3, for example, the controller 102would determine that the power trend is increasingly negative frompoints 306 to 308 to 310. In some implementations, the first conditionencompasses a plurality of different sub-conditions, any of which aresufficient to cause the first condition to be satisfied. For example, insome implementations, a first sub-condition is whether the power trendis negative for a predetermined number of steps (e.g., 5 steps, or anyother appropriate number of steps), and a second sub-condition iswhether the power trend is increasingly negative for a predeterminednumber of steps (e.g., 3 steps, or any other appropriate number ofsteps). Thus, if the portion of the power curve beyond the maximum powerpoint drops off precipitously (i.e., the curve is steepening in thepositive x-direction), the satisfaction of the second sub-conditionsuffices to satisfy the first condition. On the other hand, if theportion of the power curve beyond the maximum power point does not dropoff precipitously (i.e., the curve decreases with a substantiallyconstant slope), the satisfaction of the first sub-condition isnecessary for the first condition to be satisfied. This way, if theportion of the power curve beyond the maximum power point does drop offprecipitously, the controller 102 will not bother to take additionalsteps in the positive x-direction, because detection of the increasinglynegative power trend is a sufficient indicator that the controller 102has passed the maximum power point, and additional steps in thatdirection would only serve to unnecessarily reduce the power of thesolar panel.

Once the first condition is satisfied, the controller 102 begins toclimb down the power curve (i.e., traversing the power curve in thenegative x-direction) by increasing the duty cycle with each subsequentstep (e.g., from 52% to 54%, and so on). The controller continues toincrease the duty cycle with each subsequent step until a secondcondition is satisfied. In some implementations, the second condition isthat the power trend of the curve is constant for a certain number ofsteps (e.g., 5 steps). In some implementations, the controller 102identifies a constant slope condition when the difference in powerbetween subsequent steps is constant (e.g., the difference in powerbetween point 306 and point 304 is 10 W, and the difference in powerbetween point 304 and point 302 is also 10 W). In some implementations,the second condition is that the slope of the curve is substantiallyequal to a certain value (e.g., a slope of 1), and/or is substantiallyequal to a certain value for a certain number of steps (e.g., 3 steps).

As described above, by oscillating back and forth between these twoconditions, the controller 102 attempts to identify the maximum powerpoint for the contemporaneous environmental condition (e.g., a point atwhich the power curve has a slope of zero). The controller 102 can thenbegin to operate at a duty cycle that corresponds to the maximum powerpoint, until a sufficient change in the environmental conditions isdetected (e.g., the power produced by the energy capture device changeswhile the controller 102 is operating at the previously identifiedmaximum power point).

In some implementations, the controller 102 is configured to oscillatearound the maximum power point more than once, in order to confirm thatthe maximum power point is stable and was accurately identified. Forexample, after climbing up the power curve until the first condition issatisfied (e.g., stepping from step 302 through 310) and climbing downthe power curve until the second condition is satisfied (e.g., steppingfrom step 310 through 302), the controller 102 repeats this cycle acertain number of times. In some implementations, the controller 102repeats the cycle until the maximum power point identified during eachcycle (e.g., the point at which the slope changes from positive tonegative) is stable. In some implementations, the maximum power point isstable when the maximum power point is substantially the same (e.g.,within +/−1%, 2%, 3%, 4%, 5%, or any other appropriate range) over apredetermined number of cycles (e.g., 1, 2, 3, 4, 5, 6, 7, 8, 9, or 10cycles, or any other appropriate number of cycles). In someimplementations, a cycle includes a series of steps in the positivex-direction and a series of steps in the negative x-direction. In someimplementations, a cycle includes a series of steps in only onedirection.

Moreover, as described above, in some implementations, the controller102 also increases or decreases the step sizes (e.g., the amount bywhich the duty cycle changes between steps) under certain circumstancesin order to further increase the efficiency and/or effectiveness of thesystem. For example, in some implementations, if the controller does notdetect a particular condition after a certain number of steps, itincreases the step size. As one specific example, if the controller 102is traversing the power curve in the positive x-direction, but does notdetect a negative slope after 5 steps at a 1% duty cycle decrease perstep, the controller 102 begins decreasing the duty cycle by 2% perstep. If the controller 102 does not detect a negative slope after 5steps at the 2% duty cycle decrease per step, the controller 102 beginsdecreasing the duty cycle by 5% per step. Increasing the step sizeallows the controller 102 to more quickly find the maximum power point(e.g., where the slope transitions from a positive value to a negativevalue). The foregoing values of the step size and the number of stepstaken before changing the step size are merely examples, and othervalues are also contemplated. In some implementations, once thecontroller 102 identifies the maximum power point after increasing thestep sizes, the controller 102 begins to operate at the maximum powerpoint, and resets the step sizes for subsequent steps to the smallestallowable step size. As noted above, the value of the smallest allowablestep size depends, in part, on whether the controller 102 is using ahigh radiant energy MPPT algorithm or a low radiant energy MPPTalgorithm. Thus, when the controller 102 once again begins seeking themaximum power point (e.g., in response to detecting that the powerproduced by the energy capture device has changed while the controller102 was operating at the previously identified maximum power point), itwill begin using the smallest allowable step size.

In the foregoing discussion, the terms “increase” and “decrease”correspond to absolute value change in the step size. For example, whenthe step sizes are increased from 1% to 2%, the actual difference induty cycle between steps becomes −2% for each step in the positivex-direction, and +2% for each step in the negative x-direction. For easeof notation, this change is referred to as an “increased” step size,even though the actual duty cycle value decreases for steps taken in thepositive x-direction.

In some implementations, as described above, in addition to stepping theduty cycle up and down in order to converge on the maximum power point(or in addition to any other appropriate MPPT technique or techniques),the controller 102 performs a maximum power point seeking scan in orderto determine the maximum power point for the system at that particularmoment. Specifically, the controller 102 starts with a duty cycle of arelatively high value (e.g., 75%, 80%, etc., which correspond to arelatively low voltage), and then proceeds through a series of steps inwhich the duty cycle is decreased with each step, until a terminationcondition is satisfied. The termination condition indicates that thecontroller 102 is almost certainly past the maximum power point for thegiven environmental conditions, which, in some implementations,corresponds to a duty cycle of 0%, the slope of the power curve reachinga threshold value, or the slope of the power curve having becomeincreasingly negative for a predetermined number of steps. In someimplementations, the termination point for the maximum power pointseeking scan is when a power trend (e.g., a value that corresponds to aslope of a power curve) is indicative that the slope has becomenegative, is negative for a predetermined number of steps (e.g., 5),and/or is increasingly negative for a certain number of steps (e.g.,each power trend value (e.g., slope) is more negative than the lastvalue for a certain number of steps).

At each step of the maximum power point seeking scan, the controller 102determines the power produced by the solar panel, and determines whetherit is the highest power value detected during the scan. If it is thehighest power value, the controller 102 stores the duty cycle at whichthat power value occurred. If it is not the highest power value, thecontroller 102 does not store the corresponding duty cycle value. Oncethe maximum power point seeking scan reaches the termination condition,the stored value will correspond to the maximum power point for thecontemporaneous environmental condition, regardless of whether the powercurve exhibits local maxima or other irregularities. Of course, in otherimplementations, some or all the power values are stored during thedetermination of the maximum power point. For example, in someimplementations, the controller has access to registries or other formsof memory where multiple power values are stored. In someimplementations, such storage is used for analyzing trends in accordancewith the MPPT techniques disclosed herein.

By performing the maximum power point scan in the afore referenced way,the controller 102 more easily avoids converging on a false maximumpower point (e.g., a local maximum point that does not, in fact,correspond to the maximum power point), such as point 230 in FIG. 2E.For example, by performing a maximum power point seeking scan on thecurve illustrated in FIG. 2E, the controller 102 would determine thatpoint 230 is not, in fact, the maximum power point, and would insteaddetect that the maximum power point actually occurs at the duty cyclevalue corresponding to point 227.

In addition to identifying the maximum power point for thecontemporaneous environmental condition, the controller 102 uses themaximum power point seeking scan to determine whether thecontemporaneous environmental condition is a high or low radiant energycondition, and, thus, which of multiple candidate MPPT algorithms(and/or which configuration of a single MPPT algorithm) to usethereafter. In some implementations, the controller 102 determines theintensity of the radiant energy based on the slope of the power curve inthe constant current region of the power curve. In particular, in someimplementations, the slope of the constant current region for a highradiant energy condition is substantially equal to a value of 1, whereasthe slope of the constant current region for a low radiant energycondition is substantially equal to a value of 0.5. Accordingly, whenthe controller 102 is performing the maximum power point seeking scan,the controller 102 determines the slope of the power curve in theconstant current region, and based on the value of the slope in thatregion, determines whether the conditions are indicative of high or lowradiant energy conditions. The controller 102 then selects theappropriate MPPT algorithm based on the determination. In someimplementations, if the slope is above about 0.5, the conditions aredeemed to be high radiant energy conditions. In some implementations, ifthe slope is below about 1, the conditions are deemed to be low radiantenergy conditions. In some implementations, if the slope is below about0.5, the conditions are deemed to be low radiant energy conditions. Theslope values in the preceding example are merely examples. The actualvalues characteristic of high and low radiant energy conditions may bedifferent depending on various factors, such as the type and/orcharacteristics of the energy capture device being used, the definitionsof “high” and “low” radiant energy conditions (which themselves may bedefined differently in different implementations), and the like.

In some implementations, the controller 102 uses any other appropriatetechnique for differentiating between power curves that arecharacteristic of different environmental conditions. For example, it isreadily apparent in FIG. 2B that the profile for curve 222 (e.g., a highradiant energy condition) is dramatically different from curve 226(e.g., a low radiant energy condition)—curve 222 is steeper on bothsides of the maximum power point than curve 226, which exhibits aflatter, more gradual profile (overall, and in the vicinity of themaximum power point). Moreover, the power drops off much more steeply oneither side of the maximum power point on curve 222 (e.g., point 228)than on curve 226 (e.g., point 227). Accordingly, any technique forobserving a change from the sharply peaked power curve characteristic ofa high radiant energy condition to the flatter power curvecharacteristic of a lower radiant energy condition (or vice versa) maybe used to determine the contemporaneous environmental condition. Forexample, in some implementations, the controller 102 determines thesmallest curvature (e.g., radius of curvature) in the power curve, andthe environmental condition, and hence the particular MPPT algorithm tobe used, is determined based on the value of the smallest curvature(e.g., if the smallest curvature is smaller than a threshold value, thecontemporaneous environmental condition is a high radiant energycondition, and/or if the smallest curvature is larger than a thresholdvalue, the contemporaneous environmental condition is a low radiantenergy condition). As another example, in some implementations, thecontroller 102 determines an area under the power curve, and theenvironmental condition, and hence the particular MPPT algorithm to beused, is determined based on the area under the power curve (e.g., ifthe area exceeds a threshold value, the contemporaneous environmentalcondition is a high radiant energy condition, and/or if the area issmaller than a threshold value, the contemporaneous environmentalcondition is a low radiant energy condition)). Other techniques may alsobe used.

In some implementations, the controller 102 performs the maximum powerpoint seeking scan in response to one or more conditions. For example,in some implementations, the controller 102 scans the power curve on aregular schedule (e.g., every 1, 2, 3, 4, 5, 7, 10, 15, 30, 60, or 90minutes, etc.).

In some implementations, the controller 102 performs the maximum powerpoint seeking scan in response to a failure to locate a maximum powerpoint (e.g., a point at which the slope of the power curve issubstantially equal to zero) after a predetermined number of steps whileexecuting an MPPT algorithm. For example, if the controller 102 isstepping up the power curve in order to identify a new maximum powerpoint, and does not detect a negative slope within a certain number ofsteps, the controller 102 ceases operating according to the MPPTalgorithm and instead performs a maximum power point seeking scan inorder to (1) identify the current maximum power point, and (2) determinewhether the contemporaneous environmental condition is indicative of ahigh or low radiant energy condition, and, thus, which MPPT algorithm touse following the maximum power point seeking scan.

In some implementations, the controller 102 performs the maximum powerpoint seeking scan in response to a combination of these conditions(e.g., on a regular schedule and upon a failure to identify a maximumpower point during steady state operation).

The example system and method described herein describes using one oftwo different MPPT algorithms depending on the contemporaneousenvironmental condition. In some implementations, additional MPPTalgorithms are also used. For example, instead of using one MPPTalgorithm for high radiant energy conditions and another for low radiantenergy conditions, in some implementations the controller 102 uses 3, 4,5, or more MPPT algorithms, each suited to a different environmentalcondition or amount/intensity of light. This way, each MPPT algorithmcan be optimized for a particular characteristic environmental conditionand selected for use when the controller 102 detects that particularenvironmental condition.

FIG. 4 is a block diagram illustrating a controller 102, in accordancewith some implementations. In some implementations, the controller 102is a handheld electronic device. For example, in some implementations,the controller 102 is or is incorporated into, any of: a light (e.g., alantern, flashlight, or any other type of light), a mobile telephone, aradio, a laptop computer, a tablet computer, or any other appropriateelectrical device.

The controller 102 typically includes one or more CPUs 404, an optionaluser interface 406, an optional network communications interface 412(wired and/or wireless), one or more sensors 414, one or more powerinputs 104, one or more power outputs 106, memory 416, and at least onecommunication bus 402 for interconnecting these components. Eachcommunication bus 402 may include circuitry (sometimes called a chipset)that interconnects and controls communications between systemcomponents. In some implementations, the optional user interface 406includes a display 408 and input device(s) 410 (e.g., keyboard, mouse,touchscreen, keypads, etc.).

The one or more sensors 414 include sensors configured to detectelectrical characteristics of various aspects of a solar powergeneration system of which the controller 102 is part, and include anynecessary electrical components, circuits, processors, and components(software or hardware) for sensing various electrical values. Forexample, in some implementations, the sensors 414 include sensors fordetecting any of the following values: power consumed by one or morecomponents of a solar power generation system (e.g., any internal orexternal components, or any combination of such components); currentdrawn by one or more components of the solar power generation system; avoltage difference between one or more components of the solar powergeneration system; and an open-circuit voltage of an energy capturedevice connected to the controller 102 (e.g., a solar panel). Othersensors are also included, in various implementations, for sensingand/or measuring other values.

In some implementations, sensors 414 also include sensors for detectingother characteristics of a solar power generation system of which thecontroller 102 is part, including, for example, ambient lightconditions, ambient temperature conditions, and the like.

The one or more power inputs 104 include hardware (e.g., connectors,ports, electronic circuitry, etc.) and/or software (e.g., programs,executable instructions, firmware, embedded logic, etc.) that facilitatea mechanical and/or electrical connection between the controller 102 andone or more energy capture devices (e.g., the energy capture device 110,FIG. 1). For example, in some implementations, the one or more powerinputs 104 include a socket or plug (e.g., a coaxial DC power connecter)for connecting to a corresponding socket or plug of the energy capturedevice 110.

The one or more power outputs 106 include hardware (e.g., connectors,ports, electronic circuitry, etc.) and/or software (e.g., programs,executable instructions, firmware, embedded logic, etc.) that facilitatea mechanical and/or electrical connection between the controller 102 andone or more external loads 120 (e.g., the external loads 120-1 . . .120-n, FIG. 1). In some implementations, the one or more power outputs106 include electrical circuitry that is used to change the electricalcharacteristics of a load connected thereto. For example, the one ormore power outputs 106 include and/or are coupled to one or moretransistors (e.g., field effect transistors, or “FETs”), which are used,in some implementations, to vary the impedance of the load experiencedby an energy capture device coupled to the controller 102. The one ormore transistors (and/or other appropriate components) are used, forexample, to adjust the electrical characteristics of the load inaccordance with an MPPT algorithm, as described below with respect toFIGS. 5A-5F.

Memory 416 includes high-speed random access memory, such as DRAM, SRAM,DDR RAM, or other random access solid state memory devices, and mayinclude non-volatile memory, such as one or more magnetic disk storagedevices, optical disk storage devices, flash memory devices, or othernon-volatile solid state storage devices. Memory 416 may optionallyinclude one or more storage devices remotely located from the CPU(s) 404(e.g., a network-connected storage device or service, such as a “cloud”based storage service). Memory 416, or alternately the non-volatilememory device(s) within memory 416, includes a non-transitory computerreadable storage medium. In some implementations, memory 416 or thecomputer readable storage medium of memory 416 stores the followingprograms, modules and data structures, or a subset thereof:

-   -   an optional operating system 418 that includes procedures for        handling various basic system services and for performing        hardware dependent tasks;    -   an optional communication module 420 that is used for connecting        the controller 102 to other computers or devices via the one or        more optional network communication interfaces 412 (wired or        wireless) and one or more communication networks, such as the        Internet, other Wide Area Networks, Local Area Networks,        Personal Area Networks, Metropolitan Area Networks, VPNs, local        peer-to-peer and/or ad-hoc connections, and so on;    -   an optional user interface module 422 that receives commands        and/or inputs from a user via the optional user interface 406        (e.g., from the input device(s) 410, which may include        keyboard(s), touch screen(s), microphone(s), pointing device(s),        and the like), and provides user interface objects on a display        (e.g., the display 408);    -   a sensor module 424 for communicating with the one or more        sensors 414 to receive sensed electrical values, calculate        derived values, and programmatically couple the output of the        one or more sensors 414 to other components of the controller        102, such as the maximum power point tracking module 426, below;    -   a maximum power point tracking module 426 for performing maximum        power point tracking, as described herein, including:        -   determining whether an MPPT algorithm in use at a given time            is suitable for the environmental conditions in effect at            the given time;        -   performing recalibration cycles to determine whether an MPPT            algorithm in use at a given time continues to be suitable            for the environmental conditions in effect at the given            time;        -   executing any of multiple MPPT algorithms, such as the first            MPPT algorithm 428, the second MPPT algorithm 430, etc.;        -   switching from one MPPT algorithm to another MPPT algorithm;        -   changing values of configuration parameters for an MPPT            algorithm; and        -   determining, according to an MPPT algorithm, one or more            operational setpoints for the controller, such as (but not            limited to) duty cycle values; and    -   a power output control module 432 for adjusting an electrical        property affecting an apparent load resistance and/or load        impedance experienced by one or more energy capture devices        coupled to the controller 102 according to a selected maximum        power point tracking algorithm (such as adjusting the duty cycle        value of a transistor).

In some implementations, the controller 102 includes a subset of thecomponents and modules shown in FIG. 4. Moreover, in someimplementations, the controller 102 includes additional componentsand/or modules not shown in FIG. 4.

Attention is directed to FIGS. 5A-5F, which are flow diagramsillustrating a maximum power point tracking method 500, in accordancewith some implementations. Each of the operations shown in FIGS. 5A-5Fmay correspond to instructions stored in a computer memory ornontransitory computer readable storage medium. In some implementations,the steps are performed at an electronic device with one or moreprocessors (or cores) and memory storing one or more programs forexecution by the one or more processors (or cores). For example, in someimplementations, the steps are performed by the controller 102.Moreover, the individual steps of the method may be distributed amongmultiple devices, or multiple components and/or modules of a device(e.g., controller 102), in any appropriate manner.

The controller 102 initiates a first maximum power point trackingalgorithm during an epoch (502) (e.g., with the MPPT module 426). Asused herein, an epoch refers to a period of operation of a solar powersystem. For example, an epoch may refer to an entire solar day (e.g., 24hours), or to the daylight portion of a solar day. An epoch may alsorefer to a period of operation of the solar power system that is lessthan (or longer than) the daylight portion of a solar day. For example,a solar power system may be used only long enough during a day togenerate a desired amount of power, such as until a battery is chargedto a desired level. An epoch may be delineated by natural phenomenon,such as the period from dawn to dusk, or by human manipulation, such asthe period of time between a user activating and deactivating a solarpower generation system.

Returning to FIG. 5A, the controller 102 adjusts, according to the firstmaximum power point tracking algorithm, an electrical property affectingan apparent load resistance applied to the one or more energy capturedevices (504) (e.g., with the power output control module 432). In someimplementations, adjusting the electrical property according to thefirst maximum power point tracking algorithm includes adjusting the dutycycle of a transistor between the solar panel and the external load inorder to identify a duty cycle that corresponds to the maximum powerpoint and operate the transistor at that duty cycle. Specific techniquesfor adjusting the electrical property according to the first maximumpower point tracking algorithm are discussed herein.

The controller 102, prior to the end of the epoch, determines whetherthe first maximum power point tracking algorithm is satisfactory (506)(e.g., with the MPPT module 426). In some implementations, adetermination whether the first maximum power point tracking algorithmis satisfactory is made as a result of performing a maximum power pointseeking scan, as described with respect to (522)-(532).

In accordance with a determination that the first maximum power pointtracking algorithm is satisfactory, the controller 102 continues to usethe first maximum power point tracking algorithm and continues to adjustthe electrical property according to the first maximum power pointtracking algorithm during the epoch (508) (e.g., with the power outputcontrol module 432).

In accordance with a determination that the first maximum power pointtracking algorithm is unsatisfactory, the controller 102 switches to asecond maximum power point tracking algorithm during the epoch (510)(e.g., with the MPPT module 426), where the first maximum power pointtracking algorithm is different from the second maximum power pointtracking algorithm, as described with respect to (522)-(532). Thecontroller 102 then adjusts the electrical property according to thesecond maximum power point tracking algorithm (512) (e.g., with thepower output control module 432).

In some implementations, adjusting the electrical property according tothe second maximum power point tracking algorithm includes adjusting theduty cycle of a transistor between the solar panel and the external loadin order to identify and operate the transistor at a duty cycle thatcorresponds to the maximum power point. Specific techniques foradjusting the electrical property according to the second maximum powerpoint tracking algorithm are discussed herein.

In some implementations, the first maximum power point trackingalgorithm corresponds to a first power production characteristic of theone or more energy capture devices, and the second maximum power pointtracking algorithm corresponds to a second power productioncharacteristic of the one or more energy capture devices. A powerproduction characteristic corresponds to how an energy capture device(e.g., a solar panel) responds to a particular environmental conditionacross a range of possible operating values (e.g., voltage, apparentresistance, impedance, duty cycle, etc.), and may bevisualized/represented as a current versus voltage curve (e.g., FIG. 2A)and/or a power versus voltage curve (e.g., FIG. 2B) of the solar panelunder a particular environmental condition. In some implementations, thefirst power production characteristic corresponds to a condition ofhigher illuminance of the one or more energy capture devices as comparedto a second power production characteristic. In some implementations,the first power production characteristic corresponds to direct sunlightconditions, and the second power production characteristic correspondsto at least partially indirect sunlight conditions. At least partiallyindirect sunlight conditions include, for example, cloudy conditions,fully or partially shaded conditions, dirty or occluded energy capturedevices, and the like.

In some implementations, a determination that the first maximum powerpoint tracking algorithm is satisfactory corresponds to a determinationthat the one or more energy capture devices are operating according tothe first power production characteristic. In some implementations, adetermination that the first maximum power point tracking algorithm isunsatisfactory corresponds to a determination that the one or moreenergy capture devices are operating according to the second powerproduction characteristic.

In some implementations, after switching to the second maximum powerpoint tracking algorithm, the controller 102 determines whether thesecond maximum power point tracking algorithm is satisfactory prior tothe end of the epoch (514) (e.g., with the MPPT module 426). In someimplementations, a determination whether the second maximum power pointtracking algorithm is satisfactory is made as a result of performing amaximum power point seeking scan, as described with respect to(522)-(532).

In FIG. 5B, in some implementations, in accordance with a determinationthat the second maximum power point tracking algorithm is satisfactory,the controller 102 continues to use the second maximum power pointtracking algorithm and continues to adjust the electrical propertyaccording to the second maximum power point tracking algorithm duringthe epoch (516) (e.g., with the power output control module 432).

In some implementations, in accordance with a determination that thesecond maximum power point tracking algorithm is unsatisfactory, thecontroller 102 switches to the first maximum power point trackingalgorithm during the epoch (518) (e.g., with the MPPT module 426), andadjusts the electrical property according to the first maximum powerpoint tracking algorithm (520) (e.g., with the power output controlmodule 432).

In some implementations, the controller 102 performs a maximum powerpoint seeking scan, described with respect to (522)-(532). In someimplementations, the controller 102 adjusts the electrical property overa range of values (522) (e.g., with the power output control module432). In some implementations, the range of values corresponds to arange of duty cycle values of a transistor that couples an external loadto an energy capture device. In some implementations, the range of dutycycle values is from 100%-0%. In some implementations, the range of dutycycle values is from 100% towards 0%, terminating at a duty cycle valuecorresponding to a point at which a certain condition is satisfied(e.g., the slope of the power curve satisfies a condition). In someimplementations, the range of duty cycle values is any other appropriaterange.

In some implementations, the controller 102, while adjusting theelectrical property over the range of values, identifies a maximum powerpoint (524) (e.g., with the MPPT module 426). In some implementations,identifying the maximum power point includes determining a value of anelectrical characteristic (e.g., a duty cycle) that corresponds to ahighest power produced by an energy capture device during the maximumpower point seeking scan. For example, as described above, thecontroller 102 determines the power produced by the solar panel atvarious points during the scan, and determines whether that value is thehighest power detected during the scan. If it is the highest value, thecontroller 102 stores the duty cycle at which that power occurred. If itis not the highest value, the controller 102 does not store the value.Once the maximum power point seeking scan ends, the stored value willcorrespond to the maximum power point for the contemporaneousenvironmental condition.

In some implementations, the controller 102 selects one of the firstmaximum power point tracking algorithm or the second maximum power pointtracking algorithm for use after the maximum power point seeking scan(526) (e.g., with the MPPT module 426). For example, in someimplementations, the controller 102 determines the intensity of theradiant energy based on the slope (or a value indicative of the slope)of the power curve in the constant current region of the power curve.Additional details relating to determining whether to select the firstor the second maximum power point tracking algorithm are discussedabove.

In some implementations, the controller 102 determines that atermination condition for the maximum power point seeking scan issatisfied (528) (e.g., with the MPPT module 426). In someimplementations, the termination condition for the maximum power pointseeking scan is satisfied when a power trend (e.g., a value thatcorresponds to a slope of a power curve) is indicative that the slopehas become negative, is negative for a predetermined number of steps(e.g., 5), and/or is increasingly negative for a certain number of steps(e.g., each power trend value (e.g., slope) is more negative than thelast value for a certain number of steps).

In FIG. 5C, in some implementations, in accordance with a determinationthat the termination condition is satisfied, the controller 102 adjuststhe electrical property according to the selected maximum power pointseeking algorithm, using a value of the electrical propertycorresponding to the maximum power point as an initial operating point(530) (e.g., with the power output control module 432). For example, ifthe controller 102 determines, from the maximum power point seekingscan, that it is a sunny day, and the maximum point corresponds to aduty cycle value of 54%, then, once the termination condition issatisfied, the controller 102 initiates the first maximum power pointtracking algorithm (e.g., the sunny day MPPT algorithm), and beginsoperating at a duty cycle of 54%, at which time the first maximum powerpoint tracking algorithm will begin to track the maximum power point asdescribed herein.

In some implementations, the controller 102 determines whether the powerproduced by the one or more energy capture devices over the range ofvalues varies according to a slope indicative of a first environmentalcondition or a second environmental condition, wherein the secondenvironmental condition is different from the first environmentalcondition (532) (e.g., with the MPPT module 426). For example, in someimplementations, the first environmental condition corresponds to a highradiant energy condition (e.g., a sunny day), characterized by arelatively steeper slope of a power curve (e.g., 1), and the secondenvironmental condition corresponds to a low radiant energy condition(e.g., a cloudy day), and is characterized by a relatively shallowerslope (e.g., 0.5).

In some implementations, a determination that the first maximum powerpoint tracking algorithm is satisfactory (508) is made in accordancewith (and/or in response to) a determination that the power produced bythe one or more energy capture devices over the range of values variesaccording to a slope indicative of the first environmental condition(e.g., at (532)). In some implementations, a determination that thefirst maximum power point tracking algorithm is unsatisfactory (510) ismade in accordance with (and/or in response to) a determination that thepower produced by the one or more energy capture devices over the rangeof values varies according to a slope indicative of the secondenvironmental condition (e.g., at (532)).

In some implementations, a determination that the second maximum powerpoint tracking algorithm is satisfactory (516) is made in accordancewith (and/or in response to) a determination that the power produced bythe one or more energy capture devices over the range of values variesaccording to a slope indicative of the second environmental condition(e.g., at (532)). In some implementations, a determination that thesecond maximum power point tracking algorithm is unsatisfactory (518) ismade in accordance with (and/or in response to) a determination that thepower produced by the one or more energy capture devices over the rangeof values varies according to a slope indicative of the firstenvironmental condition (e.g., at (532)).

In FIG. 5D, in some implementations, in order to adjust the electricalproperty according to the first maximum power point tracking algorithm(504) and/or the second maximum power point tracking algorithm (512),the controller 102 maintains a power trend (534), where the power trendis a repeatedly updated value based at least in part on two power valuesof the one or more energy capture devices. In some implementations,power values are measures of electrical power produced by the one ormore energy capture devices. The measures of electrical power reflectthe power produced by the one or more energy capture devices at aparticular step (e.g., an average power value for the duration of astep), periodically (e.g., at a predetermined interval), or any otherappropriate times or intervals. In some implementations, each powervalue is determined by measuring only a current value corresponding to aflow of current from the one or more energy capture devices. In someimplementations, the controller 102 maintains the power trend bydetermining a plurality of slope values, where each slope value of theplurality of slope values is based on at least two respective powervalues (536) (e.g., with the MPPT module 426).

In some implementations, over a first series of steps, the controller102 adjusts the electrical property in a first direction, wherein eachrespective step in the first series of steps corresponds to a respectivevalue of the electrical property (538) (e.g., with the power outputcontrol module 432). Thus, the controller 102 operates at one duty cyclevalue for a certain amount of time (i.e., a first step), and thenoperates at another duty cycle for a certain amount of time (i.e., asecond step), and so on. In some implementations, the controller 102adjusts the electrical property in the first direction by decreasing aduty cycle of a transistor that controls a flow of current from the oneor more energy capture devices to the external load (540) (e.g., withthe power output control module 432).

In some implementations, the controller 102 determines a firstrespective power value for each respective step of the first series ofsteps (542) (e.g., with the MPPT module 426). In some implementations,the power values for each respective step are used to determine thepower trend over the first series of steps (and/or a subset of the firstseries of steps).

In some implementations, the controller determines whether the powertrend over the first series of steps satisfies a first condition (544)(e.g., with the MPPT module 426). In some implementations, the powertrend satisfies the first condition when the power trend is negative fora predetermined number of steps. In some implementations, the powertrend satisfies the first condition when a change in the power trendover a plurality of steps satisfies a third condition. As describedabove, in some implementations, the power trend is a slope of the powercurve based on power values at two or more points along the curve.Accordingly, in some implementations, the change in the power trend overthe plurality of steps satisfies the third condition when the slope isbecoming increasingly negative at a sufficient rate. In other words, ifthe slope (i.e., power trend) from 306 to 308 (FIG. 3) is −3, and theslope (i.e., power trend) from 308 to 310 (FIG. 3) is −7, the thirdcondition will be satisfied because the rate of change of the slopebecame increasingly negative at a sufficient (i.e., threshold) rate. Onthe other hand, if the slope from 308 to 310 had remained at −3, thethird condition would not have been satisfied because the slope remainedconstant (i.e., did not become more negative) across these steps.Further, if the slope is becoming increasingly negative at a low rate(e.g., the slope changed from −3 to −4), in some implementations, thiswill not be enough to satisfy the third condition. The particular valuesand conditions in this description are merely examples, and otherappropriate values and conditions (i.e., the particular rate of changeof a slope that will satisfy the third condition) may be substituted.

In accordance with a determination that the power trend satisfies thefirst condition during the first series of steps, the controller 102,over a second series of steps, adjusts the electrical property in asecond direction, different from the first direction (546) (e.g., withthe power output control module 432). In some implementations, thecontroller 102 adjusts the electrical property in the second directionby increasing the duty cycle of the transistor (547) (e.g., with thepower output control module 432). Increasing the duty cycle results intraversing the power curve in a negative x-direction, as discussed abovewith respect to FIGS. 2A-2E and 3.

In some implementations, the controller 102 determines a secondrespective power value for each respective step of the second series ofsteps (548) (e.g., with the MPPT module 426). In some implementations,the power values for each respective step are used to determine thepower trend over the first series of steps (and/or a subset of the firstseries of steps).

In some implementations, the controller 102 determines whether the powertrend over the second series of steps satisfies a second condition (550)(e.g., with the MPPT module 426). In some implementations, the powertrend satisfies the second condition when the power trend issubstantially constant for a predetermined number of steps. In someimplementations, the power trend satisfies the second condition when theslope of the power curve is constant for 1, 2, 3, 4, 5, 6, 7, 8, 9, or10 steps, or any other appropriate number of steps. In someimplementations, the power trend satisfies the second condition when thepower trend is indicative of a constant current condition of the energycapture device for a predetermined number of steps. In someimplementations, the power trend is indicative of a constant currentcondition when the slope of the power curve is constant for a certainnumber of steps (e.g., 1, 2, 3, 4, 5, 6, 7, 8, 9, or 10, or any otherappropriate number of steps. In some implementations, the power trendsatisfies the second condition when the power trend is substantiallyequal to 1.

In FIG. 5E, in some implementations, subsequent to determining that thepower trend satisfies the second condition, the controller 102, based onpower values determined over the first series of steps (538) and thesecond series of steps (546), identifies a maximum power point (552)(e.g., with the MPPT module 426). For example, as described above, themaximum power point corresponds to a point at which the power trend isindicative of a slope of zero. Thus, during the first and second seriesof steps, the controller 102 determines power values at various steps,where each step corresponds to a particular value of the electricalcharacteristic (e.g., duty cycle). In some implementations, when thecontroller 102 identifies that the power trend is zero at the same powerpoint for both the first and the second series of steps, that powerpoint is deemed the maximum power point.

In some implementations, the controller 102 uses a value of theelectrical property corresponding to the maximum power point as a newoperating point for the controller (554) (e.g., with the power outputcontrol module 432). For example, as described above, the controller 102operates at the new operating point (e.g., the newly identified maximumpower point) until an event occurs that causes the controller 102 toeither begin to step up or down the power curve in order to locate a newmaximum power point, or to perform a maximum power point seeking scan.An example of an event that causes the controller 102 to begin to stepup or down the power curve includes determining that, while operating ata point previously determined as a maximum power point, the power beinggenerated by an energy capture device changes, which indicates that theamount and/or intensity of the radiant energy incident on the energycapture device has changed, and the operating point may no longercorrespond to the maximum power point. Other examples of events thatcause the controller 102 to perform a maximum power point seeking scaninclude expiry of a timer (e.g., when maximum power point seeking scansare performed periodically), a determination that the controller 102 hasbeen unable to find a point or area in the power curve having a slope ator near zero after a certain number of steps while executing the firstor the second MPPT algorithm, and the like.

In some implementations, in order to adjust the electrical propertyaccording to the first maximum power point tracking algorithm (504)and/or the second maximum power point tracking algorithm (512), thecontroller 102 operates at a first value of the electrical property(556) (e.g., with the power output control module 432). For example, thecontroller 102 operates a transistor at a first duty cycle value. Insome implementations, the first value of the electrical property is amaximum power point that was previously determined as a result of amaximum power point seeking scan (522)-(532), or by the first or secondMPPT algorithm.

In some implementations, the controller 102 observes a change in powerproduced by the one or more energy capture devices (558) (e.g., with thesensor module 424). In some implementations, the controller 102determines whether the power produced by the one or more energy capturedevices has increased or decreased (560) (e.g., with the MPPT module426). For example, the controller 102 observes that the power beingproduced by the one or more energy capture devices increases from 5 W to10 W, or decreases from 10 W to 5 W. In some implementations, whetherthe power observed by the controller 102 decreases or increases controlswhether the controller 102 begins seeking the new maximum power point bytraversing the power curve in the positive or negative x-direction. Inparticular, if the power increases, the controller 102 begins bytraversing the power curve in the positive x-direction, as the newmaximum power point is more likely to correspond to a higher voltage(which also corresponds to a lower duty cycle and a higher loadimpedance). Subsequently, when (and if) the controller 102 detects thefirst condition (e.g., described above with respect to (544)), thecontroller 102 reverses direction and begins traversing the power curvein the negative x-direction. Accordingly, under these conditions, thefirst direction corresponds to traversing the power curve in thepositive x-direction, and the second direction corresponds to traversingthe power curve in the negative x-direction. On the other hand, if thepower decreases, the first and the second direction are reversed.Specifically, the controller 102 begins by traversing the power curve inthe negative x-direction, and, once the controller 102 detects thesecond condition (e.g., described above with respect to (550)), itreverses direction and begins traversing the power curve in the positivex-direction. Thus, under these conditions, the first directioncorresponds to traversing the power curve in the negative x-direction,and the second direction corresponds to traversing the power curve inthe positive x-direction.

In FIG. 5F, in some implementations, in accordance with a determinationthat the power produced by the one or more energy capture devices hasincreased, the controller 102 adjusts the electrical property in thefirst direction by decreasing a duty cycle of a transistor that controlsa flow of current from the one or more energy capture devices to theexternal load (562) (e.g., with the power output control module 432),and adjusts the electrical property in the second direction byincreasing the duty cycle of the transistor (564) (e.g., with the poweroutput control module 432).

Accordingly, in some implementations, in accordance with a determinationthat the power produced by the one or more energy capture devices hasdecreased, the controller 102 adjusts the electrical property in thefirst direction by increasing the duty cycle of the transistor (566)(e.g., with the power output control module 432), and adjusts theelectrical property in the second direction by decreasing the duty cycleof the transistor (568) (e.g., with the power output control module432). Where the first direction corresponds to traversing the powercurve in the negative x-direction (e.g., increasing the duty cycle ofthe transistor), and the second direction corresponds to traversing thepower curve in the positive x-direction (e.g., decreasing the duty cycleof the transistor), the first and second conditions are established soas to correspond to this convention. For example, the first condition issatisfied when the power trend is indicative that the slope of the powercurve has been substantially constant for a certain duration (e.g., acertain number of steps), and the second condition is satisfied when thepower trend is indicative that the slope has become negative, isnegative for a predetermined number of steps (e.g., 5), and/or isincreasingly negative for a certain number of steps. Thus, the first andthe second condition are determined based, at least in part, on whetherthe first direction corresponds to traversing the power curve in thepositive x-direction or in the negative x-direction.

In some implementations, the first maximum power point trackingalgorithm and the second maximum power point tracking algorithm bothoperate by stepping up and down the power curve in order to identify themaximum power point. In some implementations, the first and secondmaximum power point algorithms differ in their respective minimum stepsizes. More particularly, as described above, the first and secondmaximum power point tracking algorithms increase the step size duringoperation in order to more rapidly locate a maximum power point. Thus,if the controller 102 is operating at a small step size (e.g.,increasing and/or decreasing the duty cycle by 1%), but the maximumpower point has shifted a great distance from the previous operatingpoint, the controller increases the step size so as to increase thespeed at which the maximum power point is identified. For example, thecontroller 102 increases the step size to 2% and, if the controller 102does not reach the maximum power point, the controller 102 begins takinglarger steps of 5%. Because of the difference in the shape of the powercurve between high and low radiant energy conditions, however, the sameminimum step size may not be ideal for both algorithms. For example, ifthe controller 102 has to traverse 40% of the duty cycle of a transistorin order to locate the maximum power point under low radiant energyconditions, a 1% step size may result in the controller 102 operatingtoo slowly and being unable to find the maximum power point in areasonable time. Accordingly, in some implementations, the minimum stepsize for a low radiant energy condition is larger than the minimum stepsize for high radiant energy conditions.

Accordingly, in some implementations, when adjusting the electricalproperty according to the first maximum power point tracking algorithm(e.g., at (504)), a minimum difference in the value of the electricalproperty (e.g., the duty cycle of a transistor) between two adjacentsteps is a first value, and when adjusting the electrical propertyaccording to the second maximum power point tracking algorithm (e.g., at(512)), the minimum difference in the value of the electrical property(e.g., the duty cycle of the transistor) between two adjacent steps is asecond value that is greater than the first value. In someimplementations, the first value (i.e., the minimum difference betweentwo adjacent steps in the first MPPT algorithm) is 1% and the secondvalue (i.e., the minimum difference between two adjacent steps in thesecond MPPT algorithm) is 5%. Other values for the minimum differencesare also contemplated.

In some implementations, adjusting the electrical property in the firstdirection (e.g., at (538)) and/or in the second direction (e.g., at(546)) includes initially adjusting the electrical property of eachsubsequent step by a first amount (570) (e.g., with the power outputcontrol module 432). In some implementations, the first amountcorresponds to a minimum difference in the value of the electricalproperty between two steps. For example, in some implementations, thefirst amount is a 1% increase or decrease in the duty cycle of atransistor between steps. In some implementations, if the power trendfails to satisfy the first condition after a predetermined number ofsteps, the controller 102 begins to adjust the electrical property ofeach subsequent step by a second amount, wherein the second amount isgreater than the first amount (572) (e.g., with the power output controlmodule 432). For example, using one possible first condition, if thepower trend fails to become negative after a particular number of steps(e.g., 1, 2, 3, 4, 5, 6, 7, 8, 9, or 10 steps, or any other appropriatenumber of steps), then the controller 102 begins to adjust theelectrical property of each subsequent step by a second, greater amount(e.g., 2%). In some implementations, subsequent to beginning to adjustthe electrical property of each subsequent step by the second amount, ifthe power trend fails to satisfy the first condition after a secondparticular number of steps, the controller 102 begins to adjust theelectrical property of each subsequent step by a third amount, whereinthe third amount is greater than the second amount (574) (e.g., with thepower output control module 432). Continuing the example set forthabove, if the power trend fails to become negative after a secondparticular number of steps (e.g., 1, 2, 3, 4, 5, 6, 7, 8, 9, or 10steps, or any other appropriate number of steps), then the controllerbegins to adjust the electrical property of each subsequent step by athird, greater amount (e.g., 5%). The particular step sizes listed aremerely examples, and other step sizes are also contemplated. Forexample, different MPPT algorithms may use different step sizes.Particularly, in some implementations, in a second MPPT algorithm, theminimum step size is 5%, instead of the 1% minimum step size for a firstMPPT algorithm. Accordingly, the step sizes in the second MPPT algorithmare increased, for example, from 5% to 7%, and then from 7% to 10%. Insome implementations, an increase in step size (i.e., adjusting theelectrical property of each subsequent step by a greater amount)corresponds to an absolute value difference between steps. Accordingly,an increase in step size increases the absolute value of the differencebetween two steps, regardless of whether those steps are in the positivex-direction or the negative x-direction. As a specific example,increasing the step size from 1% to 2% results in the controller 102decreasing the duty cycle by −2% over each step (e.g., from 58% to 56%to 54%, etc.) when traversing the power curve in the positivex-direction, and increasing the duty cycle by +2% (e.g., from 54% to 56%to 58%, etc.) when traversing the power curve in the negativex-direction.

In some implementations, subsequent to beginning to adjust theelectrical property of each subsequent step by the third amount, if thepower trend fails to satisfy the first condition after a thirdparticular number of steps, the controller 102 performs a maximum powerpoint seeking scan (576) (e.g., with the MPPT module 426). For example,continuing the example set forth above, if the power trend fails tobecome negative after a third particular number of steps (e.g., 1, 2, 3,4, 5, 6, 7, 8, 9, or 10 steps, or any other appropriate number ofsteps), then the controller initiates the maximum power point seekingscan. In particular, being unable to identify the maximum power pointafter twice increasing the step size (e.g., at (572)-(576)) suggeststhat it is more efficient to perform a maximum power point seeking scanthan to continue to seek according to the first or second MPPTalgorithm. Accordingly, the controller 102 ceases the steady stateoperation and instead performs the maximum power point seeking scan toidentify the maximum power point and to determine which MPPT algorithmto use thereafter. The maximum power point seeking scan is describedwith reference to (522)-(532), and will not be repeated here.

The foregoing example describes that the maximum power point seekingscan is triggered in response to failure to locate a maximum power pointafter increasing the step size twice (i.e., performing three groups ofsteps, each group having larger step sizes than the previous group). Insome implementations, the controller 102 performs the maximum powerpoint seeking scan after more or fewer groups of steps. For example, insome implementations, the controller 102 takes 5 groups of steps, eachgroup having step sizes 1% larger than the previous group, and performsthe maximum power point seeking scan if the maximum power point is notfound after the 5 groups of steps are completed. Other step sizes andnumbers of groups are also contemplated.

Plural instances may be provided for components, operations (e.g.,method steps), or structures described herein as a single instance.Also, boundaries between various components, operations (e.g., methodsteps), and data stores are somewhat arbitrary, and particularoperations are illustrated in the context of specific illustrativeconfigurations. Other allocations of functionality are envisioned andmay fall within the scope of the implementation(s). In general,structures and functionality presented as separate components oroperations in the example configurations may be implemented as acombined structure, component, or operation. Similarly, structures andfunctionality presented as a single component or operation may beimplemented as separate components or operations. These and othervariations, modifications, additions, and improvements fall within thescope of the implementation(s). Moreover, operations that are depictedor described as occurring in a particular order may be performed inother orders, and operations that are depicted as being combined into asingle method, process, technique, or the like, may be omitted orcombined with other operations according to various implementations.

It will also be understood that, although the terms “first,” “second,”etc. may be used herein to describe various elements, these elementsshould not be limited by these terms. These terms are only used todistinguish one element from another. For example, a first algorithmcould be termed a second algorithm, and, similarly, a second algorithmcould be termed a first algorithm, without changing the meaning of thedescription, so long as all occurrences of the “first algorithm” arerenamed consistently and all occurrences of the “second algorithm” arerenamed consistently.

The terminology used herein is for the purpose of describing particularimplementations only and is not intended to be limiting of the claims.As used in the description of the implementations and the appendedclaims, the singular forms “a”, “an” and “the” are intended to includethe plural forms as well, unless the context clearly indicatesotherwise. It will also be understood that the term “and/or” as usedherein refers to and encompasses any and all possible combinations ofone or more of the associated listed items. It will be furtherunderstood that the terms “comprises” and/or “comprising,” when used inthis specification, specify the presence of stated features, integers,steps, operations, elements, and/or components, but do not preclude thepresence or addition of one or more other features, integers, steps,operations, elements, components, and/or groups thereof.

As used herein, the term “if” may be construed to mean “when” or “upon”or “in response to determining” or “in accordance with a determination”or “in response to detecting,” that a stated condition precedent istrue, depending on the context. Similarly, the phrase “if it isdetermined (that a stated condition precedent is true)” or “if (a statedcondition precedent is true)” or “when (a stated condition precedent istrue)” may be construed to mean “upon determining” or “in response todetermining” or “in accordance with a determination” or “upon detecting”or “in response to detecting” that the stated condition precedent istrue, depending on the context.

The foregoing description included example systems, methods, techniques,instruction sequences, and computing machine program products thatembody illustrative implementations. For purposes of explanation,numerous specific details were set forth in order to provide anunderstanding of various implementations of the inventive subjectmatter. It will be evident, however, to those skilled in the art thatimplementations of the inventive subject matter may be practiced withoutthese specific details. In general, well-known instruction instances,protocols, structures and techniques have not been shown in detail.

The foregoing description, for purpose of explanation, has beendescribed with reference to specific implementations. However, theillustrative discussions above are not intended to be exhaustive or tolimit the implementations to the precise forms disclosed. Manymodifications and variations are possible in view of the aboveteachings. The implementations were chosen and described in order tobest explain the principles and their practical applications, to therebyenable others skilled in the art to best utilize the implementations andvarious implementations with various modifications as are suited to theparticular use contemplated.

What is claimed is:
 1. A controller characterized by an operating pointand comprising: an input configured to receive electrical power from oneor more energy capture devices; an output configured to provideelectrical power to an external load; one or more processors; memory;and one or more programs, the one or more programs stored in the memoryand configured to be executed by the one or more processors, the one ormore programs including instructions for: adjusting, according to afirst algorithm, an electrical property affecting an apparent loadresistance applied across the input; determining, while the firstalgorithm is running, whether a first amount of power received by theinput is satisfactory; in accordance with a determination that the firstamount of power is satisfactory, continuing to adjust the electricalproperty according to the first algorithm; and in accordance with adetermination that the first amount of power received is notsatisfactory, performing a method comprising (i) switching to a secondalgorithm, and (ii) adjusting the electrical property according to thesecond algorithm, wherein the first algorithm is different from thesecond algorithm.
 2. The controller of claim 1, wherein: the firstalgorithm corresponds to a first power production characteristic of theone or more energy capture devices; the second algorithm corresponds toa second power production characteristic of the one or more energycapture devices; and a determination that the first amount of power isunsatisfactory corresponds to a determination that the one or moreenergy capture devices are operating according to the second powerproduction characteristic.
 3. The controller of claim 2, wherein thefirst power production characteristic corresponds to a condition ofhigher illuminance of the one or more energy capture devices as comparedto the second power production characteristic.
 4. The controller ofclaim 2, wherein the first power production characteristic correspondsto direct sunlight conditions, and the second power productioncharacteristic corresponds to at least partially indirect sunlightconditions.
 5. The controller of claim 1, the one or more programsfurther including instructions for performing a maximum power pointseeking scan, including instructions for: adjusting the electricalproperty over a range of values; while adjusting the electrical propertyover the range of values, identifying a maximum power point; selectingone of the first algorithm or the second algorithm for use after themaximum power point seeking scan; determining that a terminationcondition for the maximum power point seeking scan is satisfied; and inaccordance with a determination that the termination condition issatisfied: adjusting the electrical property according to the selectedalgorithm, using a value of the electrical property corresponding to themaximum power point as the operating point.
 6. The controller of claim5, the instructions for performing the maximum power point seeking scanfurther including instructions for determining whether the powerproduced by the one or more energy capture devices over the range ofvalues varies according to a slope indicative of a first environmentalcondition or a second environmental condition, wherein the secondenvironmental condition is different from the first environmentalcondition.
 7. The controller of claim 6, the one or more programsfurther including instructions for: in accordance with a determinationthat the power produced by the one or more energy capture devices overthe range of values varies according to a slope indicative of a firstenvironmental condition, determining that the first amount of power issatisfactory; and in accordance with a determination that the powerproduced by the one or more energy capture devices over the range ofvalues varies according to a slope indicative of a second environmentalcondition, determining that the first amount of power is notsatisfactory.
 8. The controller of claim 6, wherein the one or moreprograms further include instructions for: after switching to the secondalgorithm, determining whether a second amount of power received by theinput is satisfactory; in accordance with a determination that thesecond amount of power is satisfactory, continuing to adjust theelectrical property according to the second algorithm; in accordancewith a determination that the second amount of power is unsatisfactory,performing a method comprising (i) switching to the first algorithm, and(ii) adjusting the electrical property according to the first algorithm.9. The controller of claim 8, wherein the one or more programs furtherinclude instructions for: in accordance with a determination that thepower produced by the one or more energy capture devices over the rangeof values varies according to a slope indicative of the secondenvironmental condition, determining that the second amount of power issatisfactory; and in accordance with a determination that the powerproduced by the one or more energy capture devices over the range ofvalues varies according to a slope indicative of the first environmentalcondition, determining that the second amount of power is notsatisfactory.
 10. The controller of claim 1, wherein the instructionsfor adjusting the electrical property according to the first algorithmand/or the second algorithm include instructions for: while maintaininga power trend, wherein the power trend is a repeatedly updated valuebased at least in part on two power values of the one or more energycapture devices: over a first series of steps, adjusting the electricalproperty in a first direction, wherein each respective step in the firstseries of steps corresponds to a respective value of the electricalproperty; determining a first respective power value for each respectivestep of the first series of steps; determining whether the power trendover the first series of steps satisfies a first condition; inaccordance with a determination that the power trend satisfies the firstcondition during the first series of steps: over a second series ofsteps, adjusting the electrical property in a second direction,different from the first direction; determining a second respectivepower value for each respective step of the second series of steps;determining whether the power trend over the second series of stepssatisfies a second condition; and subsequent to determining that thepower trend satisfies the second condition: based on power valuesdetermined over the first and the second series of steps, identifying amaximum power point; and using a value of the electrical propertycorresponding to the maximum power point as the operating point for thecontroller.
 11. The controller of claim 10, wherein the instructions formaintaining the power trend include instructions for determining aplurality of slope values, each slope value of the plurality of slopevalues being based on at least two respective power values.
 12. Thecontroller of claim 10, wherein: the instructions for adjusting theelectrical property in the first direction include instructions fordecreasing a duty cycle of a transistor that controls a flow of currentfrom the one or more energy capture devices to the external load; andthe instructions for adjusting the electrical property in the seconddirection include instructions for increasing the duty cycle of thetransistor.
 13. The controller of claim 10, wherein the power trendsatisfies the first condition when the power trend is negative for apredetermined number of steps.
 14. The controller of claim 10, whereinthe power trend satisfies the first condition when a change in the powertrend over a plurality of steps satisfies a third condition.
 15. Thecontroller of claim 14, wherein the power trend satisfies the secondcondition when the power trend is substantially constant for apredetermined number of steps.
 16. The controller of claim 15, whereinthe power trend satisfies the second condition when the power trend isindicative of a constant current condition of the energy capture devicefor a predetermined number of steps.
 17. The controller of claim 16,wherein the power trend satisfies the second condition when the powertrend is substantially equal to
 1. 18. The controller of claim 17,wherein the second condition is different from the first condition. 19.The controller of claim 10, wherein the instructions for adjusting theelectrical property according to the first algorithm and/or the secondfurther include instructions for: operating the controller at a firstvalue of the electrical property; observing a change in power producedby the one or more energy capture devices; determining whether the powerproduced by the one or more energy capture devices has increased ordecreased; in accordance with a determination that the power produced bythe one or more energy capture devices has increased: adjusting theelectrical property in the first direction includes decreasing a dutycycle of a transistor that controls a flow of current from the one ormore energy capture devices to the external load; and adjusting theelectrical property in the second direction includes increasing the dutycycle of the transistor; and in accordance with a determination that thepower produced by the one or more energy capture devices has decreased:adjusting the electrical property in the first direction includesincreasing the duty cycle of the transistor; and adjusting theelectrical property in the second direction includes decreasing the dutycycle of the transistor.
 20. The controller of claim 10, wherein: whenadjusting the electrical property according to the first algorithm, aminimum difference in the value of the electrical property between twoadjacent steps is a first value; and when adjusting the electricalproperty according to the second algorithm, the minimum difference inthe value of the electrical property between two adjacent steps is asecond value that is greater than the first value.
 21. The controller ofclaim 10, wherein the instructions for adjusting the electrical propertyin the first direction over the first series of steps includeinstructions for: initially adjusting the electrical property of eachsubsequent step by a first amount; if the power trend fails to satisfythe first condition after a predetermined number of steps, beginning toadjust the electrical property of each subsequent step by a secondamount, wherein the second amount is greater than the first amount; andsubsequently, if the power trend fails to satisfy the first conditionafter a second particular number of steps, beginning to adjust theelectrical property of each subsequent step by a third amount, whereinthe third amount is greater than the second amount.
 22. The controllerof claim 21, wherein the instructions for adjusting the electricalproperty in the first direction over the first series of steps furtherinclude instructions for: subsequent to beginning to adjust theelectrical property of each subsequent step by the third amount, if thepower trend fails to satisfy the first condition after a thirdparticular number of steps, performing a maximum power point seekingscan, including, over a fourth series of steps: adjusting the electricalproperty in the first direction; identifying a maximum power point overthe fourth series of steps; selecting one of the first maximum powerpoint tracking algorithm or the second maximum power point trackingalgorithm for use after the maximum power point seeking scan;determining whether the power trend over the fourth series of stepssatisfies the first condition; and in accordance with a determinationthat the power trend satisfies the first condition: adjusting theelectrical property according to the selected maximum power pointseeking algorithm, using a value of the electrical propertycorresponding to the maximum power point as an initial operating point.23. The controller of claim 22, wherein each respective power valuecorresponds to an electrical power provided by the one or more energycapture devices during a step.
 24. The controller of claim 22, whereineach respective power value is determined by measuring only a currentvalue corresponding to a flow of current from the one or more energycapture devices.
 25. The controller of claim 1, wherein the electricalproperty corresponds to a duty cycle of a transistor that controls aflow of current from the one or more energy capture devices to theexternal load.
 26. The controller of claim 1, wherein the outputincludes a universal serial bus port.
 27. The controller of claim 1,wherein the one or more energy capture devices is a solar panel.
 28. Amethod for tracking a maximum power point of one or more energy capturedevices, comprising: at a controller with one or more processors andmemory storing one or more programs for execution by the one or moreprocessors, the controller characterized by an operating point:adjusting, according to a first algorithm, an electrical propertyaffecting an apparent load resistance applied across the input;determining, while the first algorithm is running, whether a firstamount of power received by the input is satisfactory; in accordancewith a determination that the first amount of power is satisfactory,continuing to adjust the electrical property according to the firstalgorithm; and in accordance with a determination that the firstalgorithm is unsatisfactory, performing a method comprising (i)switching to a second algorithm during the epoch, and (ii) adjusting theelectrical property according to the second algorithm, wherein the firstalgorithm is different from the second algorithm.
 29. An electronicdevice, comprising: one or more processors; memory; and one or moreprograms, wherein the one or more programs are stored in the memory andconfigured to be executed by the one or more processors, the one or moreprograms including instructions for: adjusting, according to a firstalgorithm, an electrical property affecting an apparent load resistanceapplied across the input; determining, while the first algorithm isrunning, whether a first amount of power received by the input issatisfactory; in accordance with a determination that the first amountof power is satisfactory, continuing to adjust the electrical propertyaccording to the algorithm; and in accordance with a determination thatthe first amount of power is unsatisfactory, performing a methodcomprising (i) switching to a second algorithm, and (ii) adjusting theelectrical property according to the second algorithm, wherein the firstalgorithm is different from the second algorithm.
 30. A non-transitorycomputer readable storage medium storing one or more programs, the oneor more programs comprising instructions, which when executed by anelectronic device, cause the device to: adjust, according to a firstalgorithm, an electrical property affecting an apparent load resistanceapplied across the input; determine, while the first algorithm isrunning, whether a first amount of power received by the input issatisfactory; in accordance with a determination that the first amountof power is satisfactory, continuing to adjust the electrical propertyaccording to the first algorithm; and in accordance with a determinationthat the first amount of power is unsatisfactory, performing a methodcomprising (i) switching to a second algorithm, and (ii) adjusting theelectrical property according to the second algorithm, wherein the firstalgorithm is different from the second algorithm.